package org.gtesoreria

import java.util.Date;
import java.util.List;

class Prestamo extends Credito{
	
	public static final String PRESTAMO_ACTIVO = "Activo"
	public static final String PRESTAMO_REFINANCIADO = "Refinanciado"
	public static final String CODIGO = "654"
	Afiliado afiliado
	Double montoTotal
	Date fechaOtorgamiento
	Date fechaPago
	Integer cantidadCuotas
	String observaciones
	Double montoCuota
	Double pendiente
	String estado = PRESTAMO_ACTIVO
	
    List cuotas = new ArrayList()
	static hasMany = [ cuotas : Cuota ]
 
	static mapping = {
		cuotas cascade:"all-delete-orphan"
	}
	
	static constraints = {
		afiliado(nullable:false)
		fechaPago(nullable:true)
		pendiente(nullable:true)
		observaciones(nullable:true)
	}
	
	def createCuotas(int cantidadCuotas){
		this.montoCuota = this.montoTotal / cantidadCuotas
		Calendar cal = Calendar.getInstance()
		for( i in 1..cantidadCuotas){
			cal.setTime(this.fechaOtorgamiento)
			def newCuota = new Cuota()
			newCuota.numero = i
			newCuota.monto = this.montoCuota
			cal.add(Calendar.MONTH, i)
			newCuota.fechaVencimiento = cal.getTime()
			newCuota.credito = this
			cuotas.add(newCuota)
		}
		
	}
	
	def cuotasPagadas(){
		return cuotas.findAll{
			cuota -> cuota.isPagada
		}
	}
	
	def cuotasNoPagadas(){
		return cuotas.findAll{
			cuota -> !cuota.isPagada
		}
	}
	
	Double montoDeuda(){
		Double result = montoTotal
		def pagadas = cuotasPagadas()
		for(Cuota cuota in pagadas){
			result -=montoCuota
		}
		return result
	}
}
